<?
/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Ubicacion_exe( $this );

	class Ubicacion_exe extends Exe
	{
	function Ubicacion_exe( &$oModule )
		{
			$this->Exe( $oModule );
		}
	// MODIFICAR_UN_Ubicacion
	function update()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Ubicacion_frm' );
			extract( $oForm->getFieldArray() );
			if ( $ncUbicacionPadre ) list ( $ncPais, $ncUbicacionPadre ) = explode(  "|",  $ncUbicacionPadre );
			// Para que no haga ciclos
			if ( $ncUbicacionPadre == $ncUbicacion ) $ncUbicacionPadre = '';
			list($cCamino, $nNivel ) = $this->oDatabase->getArray("SELECT cCamino, nNivel FROM acUbicacion WHERE ncUbicacion= $ncUbicacionPadre AND ncPais=$ncPais" );
			$cCamino = $cCamino .  $ncUbicacion . ".";
			$nNivel  = $nNivel   ? $nNivel +1: 1;
			$this->oDatabase->update("acUbicacion",
								"cdUbicacion", $cdUbicacion,
								"cOriginal", $cOriginal,
								"cSigla", $cSigla,
								"cPrefijoTelefono", $cPrefijoTelefono,
								"cCamino", $cCamino,
								"nNivel", $nNivel ,
								"cPostal", $cPostal,
								"ncUbicacionPadre", $ncUbicacionPadre,
								"ncTipoUbicacion", $ncTipoUbicacion,
								"WHERE",
								"ncPais", $ncPais,
								"ncUbicacion", $ncUbicacion );
			$this->setInputData( $ncPais . "|" . $ncUbicacion . "|" . $cPostal . "|" . $cPrefijoTelefono . "|" . $cReferencia. "|" . $cdUbicacion , $cdUbicacion);
		}
	// AGREGAR_UNA_Ubicacion
	function insert()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Ubicacion_frm' );
			extract( $oForm->getFieldArray() );
			if ( $ncUbicacionPadre == '' )
			{
				addMessage("Debe de cargar el lugar donde se encuentra $cdUbicacion (Esta dentro de) ", MENSAJE_ERROR);
				return false;
			}
			list ( $ncPais, $ncUbicacionPadre ) = explode(  "|",  $ncUbicacionPadre );
			$ncUbicacion = $this->oDatabase->nextKey("acUbicacion", "ncUbicacion", "ncPais=$ncPais" );
			list($cCamino, $nNivel ) = $this->oDatabase->getArray("SELECT cCamino, nNivel FROM acUbicacion WHERE ncUbicacion= $ncUbicacionPadre AND ncPais=$ncPais" );
			$cCamino = $cCamino .  $ncUbicacion . ".";
			$nNivel  = $nNivel   ? $nNivel +1: 1;
			$this->oDatabase->insert("acUbicacion",
								"cdUbicacion", $cdUbicacion,
								"cOriginal", $cOriginal,
								"cSigla", $cSigla,
								"cPrefijoTelefono", $cPrefijoTelefono,
								"cCamino", $cCamino,
								"nNivel", $nNivel ,
								"cPostal", $cPostal,
								"ncUbicacionPadre", $ncUbicacionPadre,
								"ncTipoUbicacion", $ncTipoUbicacion,
								"ncPais", $ncPais,
								"ncUbicacion", $ncUbicacion );
			$this->setInputData( $ncPais . "|" . $ncUbicacion . "|" . $cPostal . "|" . $cPrefijoTelefono . "|" . $cReferencia. "|" . $cdUbicacion , $cdUbicacion);
			$oForm->reset();
		}
	// ELIMINAR_UN_UBICACION
	function delete()
		{
			$ncUbicacion 				= getParam ( 'ncUbicacion' );
			$ncPais 						= getParam ( 'ncPais' );
			list ( $ncPaisCambio, $ncUbicacionCambio ) = explode(  "|", getParam ( 'ncUbicacionCambio_Key' ) );

			$this->oDatabase->beginTran();
			if ( $ncPaisCambio && $ncUbicacionCambio )
			{
				$bRet = $this->oDatabase->update("atDomicilio",
								"ncPais", $ncPaisCambio,"ncUbicacion", $ncUbicacionCambio , "WHERE", "ncPais", $ncPais,"ncUbicacion", $ncUbicacion );
				if ( !$bRet ) $this->oDatabase->RollBack();
			}
			$bRet = $this->oDatabase->delete("acUbicacion",
								"ncPais", $ncPais,
								"ncUbicacion", $ncUbicacion );
			if ( !$bRet )
				$this->oDatabase->rollBackTran();
			else
				$this->oDatabase->commitTran();
		}
	}
?>
